package com.ruoyi.web.service;

import com.ruoyi.common.core.domain.R;
import com.ruoyi.web.domain.RechargeRecord;
import com.ruoyi.web.domain.UserCapital;

import java.math.BigDecimal;
import java.util.List;

/**
 * 用户资金账户Service接口
 *
 * @author ruoyi
 * @date 2022-12-30
 */
public interface IUserCapitalService {
    /**
     * 获取用户资金余额
     *
     * @return r
     */
    R<BigDecimal> getUserBalance();

    /**
     * 根据用户id查询
     *
     * @param userId 用户id
     * @return {@link UserCapital}
     * @since 2023/3/27 17:39
     */
    UserCapital selectByUserId(Long userId);

    void rechargeThen(RechargeRecord record);

    /**
     * 查询用户资金账户
     *
     * @param id 用户资金账户主键
     * @return 用户资金账户
     */
    public UserCapital selectUserCapitalById(Long id);

    /**
     * 查询用户资金账户列表
     *
     * @param userCapital 用户资金账户
     * @return 用户资金账户集合
     */
    public List<UserCapital> selectUserCapitalList(UserCapital userCapital);

    /**
     * 新增用户资金账户
     *
     * @param userCapital 用户资金账户
     * @return 结果
     */
    public int insertUserCapital(UserCapital userCapital);

    /**
     * 修改用户资金账户
     *
     * @param userCapital 用户资金账户
     * @return 结果
     */
    public int updateUserCapital(UserCapital userCapital);

    /**
     * 批量删除用户资金账户
     *
     * @param ids 需要删除的用户资金账户主键集合
     * @return 结果
     */
    public int deleteUserCapitalByIds(Long[] ids);

    /**
     * 删除用户资金账户信息
     *
     * @param id 用户资金账户主键
     * @return 结果
     */
    public int deleteUserCapitalById(Long id);

    /**
     * 根据userIdList查询
     *
     * @param userIdList 用户idList
     * @param condition  查询条件
     * @return {@link List< UserCapital>}
     * @since 2023/4/4 12:50
     */
    List<UserCapital> listByUserIdList(List<Long> userIdList,
                                       UserCapital condition);
}
